home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / TRAX.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  5.9 KB  |  186 lines

  1. 1  '**********************************************
  2. 2  '**                   TRAX                   **
  3. 3  '**                                          **
  4. 4  '**  VERSION 1.1               JULY 7, 1982  **
  5. 5  '**********************************************
  6. 10  KEY OFF : CLS : SCREEN 2
  7. 20  RANDOMIZE : CLS : SCREEN 1
  8. 30  GOSUB 1000  ' SCAN AND PRINT THE LETTERS `TRAX' IN 8X8 FORMAT
  9. 40  GOSUB 2000  ' DRAW A BOX AROUND THE SCREEN
  10. 50  GOSUB 3000  ' DRAW THE `TRAX' FACE
  11. 60  GOSUB 4000  ' DRAW THE PLAYING FIELD
  12. 70  GOSUB 5000  ' PRINT THE LABLES FOR THE SCREEN
  13. 80  GOTO  6000  ' PLAY THE GAME
  14. 90  '
  15. 1000  '**********************************************
  16. 1010  '**  THIS SECTION SCANS FOR THE PATTERN FOR  **
  17. 1020  '**  THE LETTERS OF `TRAX'                   **
  18. 1030  '**********************************************
  19. 1040  A$ = "TRAX"
  20. 1050  B$ = ""
  21. 1060  FOR S = 1 TO 4 : B$ = B$ + MID$(A$,S,1) : NEXT
  22. 1070  A$ = B$
  23. 1080  FOR S = LEN(A$) + 1 TO 4
  24. 1090  A$ = A$ + " "
  25. 1100  NEXT
  26. 1110  DEF SEG = &HF000    ' LAST 64K OF MEMORY MAP
  27. 1120  TABLE = &HFA6E      ' LOCATION OF FIRST CHARACTER
  28. 1130  X = 2 : Y = 5 : LOCATE X,Y
  29. 1140  FOR CHARACTER = 1 TO 4           ' FOR EACH CHARACTER
  30. 1150  A = ASC(MID$(A$,CHARACTER,1))    ' GET THE ASCII VALUE
  31. 1160  CODE = TABLE + A * 8             ' POINT INTO THE TABLE
  32. 1170  FOR BYTE = 0 TO 7                ' FOR EACH BYTE
  33. 1180  PATTERN = PEEK (CODE + BYTE)
  34. 1190  LOCATE X,Y
  35. 1200  IF PATTERN < 128 THEN PRINT " ";:GOTO 1230
  36. 1210  PRINT CHR$(A);
  37. 1220  PATTERN = PATTERN - 128
  38. 1230  IF PATTERN < 64 THEN PRINT " ";:GOTO 1260
  39. 1240  PRINT CHR$(A);
  40. 1250  PATTERN = PATTERN - 64
  41. 1260  IF PATTERN < 32 THEN PRINT " ";:GOTO 1290
  42. 1270  PRINT CHR$(A);
  43. 1280  PATTERN = PATTERN - 32
  44. 1290  IF PATTERN < 16 THEN PRINT " ";:GOTO 1320
  45. 1300  PRINT CHR$(A);
  46. 1310  PATTERN = PATTERN - 16
  47. 1320  IF PATTERN < 8 THEN PRINT " ";:GOTO 1350
  48. 1330  PRINT CHR$(A);
  49. 1340  PATTERN = PATTERN - 8
  50. 1350  IF PATTERN < 4 THEN PRINT " ";:GOTO 1380
  51. 1360  PRINT CHR$(A);
  52. 1370  PATTERN = PATTERN - 4
  53. 1380  IF PATTERN < 2 THEN PRINT " ";:GOTO 1410
  54. 1390  PRINT CHR$(A);
  55. 1400  PATTERN = PATTERN - 2
  56. 1410  IF PATTERN < 1 THEN PRINT " ";:GOTO 1430
  57. 1420  PRINT CHR$(A);
  58. 1430  PATTERN = PATTERN - 1
  59. 1440  X = X + 1
  60. 1450  NEXT BYTE
  61. 1460  X = X - 8 : Y = Y + 8 : IF Y > 35 THEN X = X + 8 : Y = 1
  62. 1470  NEXT CHARACTER
  63. 1480  RETURN
  64. 2000  '**********************************************
  65. 2010  '**  THIS SECTION DRAWS A BOX AROUND THE     **
  66. 2020  '**  SCREEN                                  **
  67. 2030  '**********************************************
  68. 2040  LINE (0,0)-(319,0)
  69. 2050  LINE -(319,199)
  70. 2060  LINE -(0,199)
  71. 2070  LINE -(0,0)
  72. 2080  RETURN
  73. 3000  '**********************************************
  74. 3010  '**  THIS SECTION DRAWS THE TRAX MONSTER     **
  75. 3020  '**********************************************
  76. 3030  A1$ = " \~~~~~/ " : LOCATE 12,4 : PRINT A1$;
  77. 3040  A2$ = "  \   /  " : LOCATE 13,4 : PRINT A2$;
  78. 3050  A3$ = "  _\_/_  " : LOCATE 14,4 : PRINT A3$;
  79. 3060  A4$ = " /     \ " : LOCATE 15,4 : PRINT A4$;
  80. 3070  A5$ = "= [] [] =" : LOCATE 16,4 : PRINT A5$;
  81. 3080  A6$ = "=   *   =" : LOCATE 17,4 : PRINT A6$;
  82. 3090  A7$ = "= ***** =" : LOCATE 18,4 : PRINT A7$;
  83. 3100  A8$ = "= ***** =" : LOCATE 19,4 : PRINT A8$;
  84. 3110  A9$ = " \_____/ " : LOCATE 20,4 : PRINT A9$;
  85. 3120  RETURN
  86. 4000  '**********************************************
  87. 4010  '**  THIS SECTION DRAWS THE PLAYING FIELD    **
  88. 4020  '**********************************************
  89. 4030  A10$ = "XXXXXXXXXX"
  90. 4040  LOCATE 11,30 : PRINT A10$;
  91. 4050  LOCATE 12,30 : PRINT A10$;
  92. 4060  LOCATE 13,30 : PRINT A10$;
  93. 4070  LOCATE 14,30 : PRINT A10$;
  94. 4080  LOCATE 15,30 : PRINT A10$;
  95. 4090  LOCATE 16,30 : PRINT A10$;
  96. 4100  LOCATE 17,30 : PRINT A10$;
  97. 4110  LOCATE 18,30 : PRINT A10$;
  98. 4120  LOCATE 19,30 : PRINT A10$;
  99. 4130  LOCATE 20,30 : PRINT A10$;
  100. 4140  LOCATE 22,30 : PRINT "0123456789";
  101. 4150  FOR X = 0 TO 9 : LOCATE X+11,28 : PRINT CHR$(X+48) : NEXT
  102. 4160  RETURN
  103. 5000  '**********************************************
  104. 5010  '**  THIS SECTION PRINTS THE LABLES          **
  105. 5020  '**********************************************
  106. 5030  LOCATE 12,15 : PRINT "#1 =";
  107. 5040  LOCATE 14,15 : PRINT "#2 =";
  108. 5050  LOCATE 16,15 : PRINT "#3 =";
  109. 5060  LOCATE 18,15 : PRINT "#4 =";
  110. 5070  LOCATE 20,15 : PRINT "#5 =";
  111. 5080  RETURN
  112. 6000  '**********************************************
  113. 6010  '**  THIS SECTION PLAYS THE GAME             **
  114. 6020  '**********************************************
  115. 6030  FOR A = 1 TO 15
  116. 6040  B = RND * 9 + 1
  117. 6050  C = RND * 9 + 1
  118. 6060  LOCATE 10+B,29+C : PRINT CHR$(2);
  119. 6070  A5$ = "= -- -- =" : LOCATE 16,4 : PRINT A5$;
  120. 6080  FOR X = 1 TO 100 : NEXT X
  121. 6090  LOCATE 10+B,29+C : PRINT CHR$(88);
  122. 6100  A5$ = "= [] [] =" : LOCATE 16,4 : PRINT A5$;
  123. 6110  FOR X = 1 TO 100 : NEXT X
  124. 6120  NEXT A
  125. 6130  A7$ = "=       =" : LOCATE 18,4 : PRINT A7$;
  126. 6140  A8$ = "= ***** =" : LOCATE 19,4 : PRINT A8$;
  127. 6150  LOCATE 24,5 : PRINT "ENTER YOUR SHOT  (";CHR$(25);",";CHR$(16);")";
  128. 6160  FOR X = 1 TO 10 : A(X) = INT (RND * 9 + 1) : NEXT
  129. 6170  FOR X = 1 TO 5 : FOUND(X) = 1 : NEXT
  130. 6180  ROW = 24 : COLUMN = 29 : LENGTH = 3
  131. 6190  GOSUB 7000
  132. 6200  IF LEN(B$) <> 3 THEN GOTO 6190
  133. 6210  IF (ASC(MID$(B$,1,1)) < 48) OR (ASC(MID$(B$,1,1)) > 57) THEN GOTO 6190
  134. 6220  IF (ASC(MID$(B$,3,1)) < 48) OR (ASC(MID$(B$,3,1)) > 57) THEN GOTO 6190
  135. 6230  IF (ASC(MID$(B$,2,1)) <> 44) THEN GOTO 6190
  136. 6240  XPOS = ASC(MID$(B$,1,1))-48
  137. 6250  YPOS = ASC(MID$(B$,3,1))-48 : LOCATE 22,7 : PRINT "LAST GUESS = " ;B$;
  138. 6260  FOR X = 1 TO 5
  139. 6270  IF FOUND (X) = 0 THEN 6360
  140. 6280  DISTANCE = SQR ( (XPOS-A(X))^2 + (YPOS-A(X+5))^2 )
  141. 6290  IF DISTANCE <> 0 THEN 6340
  142. 6300  FOUND(X) = 0
  143. 6310  LOCATE 10+2*X,20 : PRINT "FOUND";
  144. 6320  LOCATE 11+XPOS,30+YPOS : PRINT CHR$(1); : X = 5
  145. 6330  GOTO 6360
  146. 6340  LOCATE 10+2*X,20 : PRINT USING "##.##";DISTANCE
  147. 6350  LOCATE 11+XPOS,30+YPOS : PRINT "*";
  148. 6360  NEXT X
  149. 6370  FOUND = 0
  150. 6380  FOR X = 1 TO 5 : FOUND = FOUND + FOUND(X) : NEXT
  151. 6390  IF FOUND <> 0 THEN 6180
  152. 6400  FOR X = 1 TO 10 : FOR Y = 1 TO 10
  153. 6410  LOCATE X+10,Y+29 : PRINT " ";
  154. 6420  FOR Z = 1 TO 50 : NEXT Z
  155. 6430  NEXT Y : NEXT X
  156. 6440  LOCATE 24,5 : PRINT "ANOTHER GAME (Y/N) ?              ";
  157. 6450  ROW = 24 : COLUMN = 26 : LENGTH = 1
  158. 6460  GOSUB 7000
  159. 6470  IF B$ = "Y" OR B$ ="y" THEN GOTO 50 ELSE CLS : END
  160. 7000  '**********************************************
  161. 7010  '**  THIS SECTION GETS THE INPUT COORDINATES **
  162. 7020  '**********************************************
  163. 7030  B$ = ""
  164. 7040  FOR X = 1 TO LENGTH
  165. 7050  B$ = B$ + "-"
  166. 7060  NEXT X
  167. 7070  LOCATE ROW,COLUMN
  168. 7080  PRINT B$;
  169. 7090  POINTER = 1 : A$ = " "
  170. 7100  WHILE (ASC(A$) <> 13)
  171. 7110  A$ = INPUT$(1)
  172. 7120  IF (POINTER > LENGTH) AND (ASC(A$) = 13) THEN 7240
  173. 7130  IF (POINTER > LENGTH) AND (ASC(A$) = 8) THEN 7190
  174. 7140  IF (POINTER > LENGTH) THEN 7240
  175. 7150  IF (ASC(A$) >= 32) THEN MID$(B$,POINTER,1) = A$ : POINTER = POINTER + 1 :       GOTO 7220
  176. 7160  IF (POINTER = 1) AND (ASC(A$) = 8) GOTO 7220
  177. 7170  IF (ASC(A$) <> 8) THEN 7210
  178. 7180     MID$(B$,POINTER,1) = "-"
  179. 7190     MID$(B$,POINTER-1,1) = "-"
  180. 7200     POINTER = POINTER -1
  181. 7210  IF (ASC(A$) = 13) THEN B$ = MID$(B$,1,POINTER-1) : POINTER = LENGTH + 1
  182. 7220  LOCATE ROW,COLUMN
  183. 7230  PRINT B$;
  184. 7240  WEND
  185. 7250  RETURN
  186.